#ifdef HERZELEID_DESKTOP
 #if _MSC_VER
  #pragma once
 #endif

 #ifndef __HERZELEID_COREAPPLICATIONVIEW_INCLUDED__
  #define __HERZELEID_COREAPPLICATIONVIEW_INCLUDED__
  #include "HerzeleidApplicationModelCore.hxx"
  #include "HerzeleidCoreWindowInc.hxx"

// Defines a factory for view provider objects.
HerzeleidAppModelCoreNamespaceBegin class CoreApplicationView
{
	friend class CoreApplication;
	typedef HerzeleidUICoreNamespaceImpl::CoreWindow Window;		// CoreWindow shortcut 
	TinyTypeDecl( Window );											// CoreWindow shortcut 
	
protected:

	// Members

	WindowPtr m_AssociatedWindow;									// Stores the app window associated with the current view.
	Bool m_bIsHosted;												// Stores the value that indicates whether this app view is hosted or not.
	Bool m_bIsMain;													// Stores a value that indicates whether this app view is the main app view or not.

public:

	CoreApplicationView();
	~CoreApplicationView();

	// Properties 

	DeclGetPropOnly( WindowPtr, CoreWindow );						// Gets the app window associated with the current view.
	DeclGetPropOnly( BoolConst, IsHosted );							// Gets the value that indicates whether this app view is hosted or not. If true, this app view is hosted; if false, it is not.
	DeclGetPropOnly( BoolConst, IsMain );							// Gets a value that indicates whether this app view is the main app view or not. If true, this app view is the main; if false, it is not.
	inline DeclConstTypedGetterFor( WindowConstPtrConst, CoreWindow ) { return m_AssociatedWindow; }		// Gets the app window associated with the current view.
	inline DeclTypedGetterFor( WindowPtr, CoreWindow ) { return m_AssociatedWindow; }					// Gets the app window associated with the current view.
	inline DeclConstTypedGetterFor( BoolConst, IsHosted ) { return m_bIsHosted; }					// Gets the value that indicates whether this app view is hosted or not. If true, this app view is hosted; if false, it is not.
	inline DeclConstTypedGetterFor( BoolConst, IsMain ) { return m_bIsMain; }					// Gets a value that indicates whether this app view is the main app view or not. If true, this app view is the main; if false, it is not.

} HerzeleidAppModelCoreNamespaceEnd; 

 #endif // !HERZELEID_COREAPPLICATIONVIEW_INCLUDED__
#endif // !HERZELEID_DESKTOP
